package com.dropdb.demo.controller.wx;

import com.dropdb.demo.bean.Collect;
import com.dropdb.demo.bean.User;
import com.dropdb.demo.bean.bo.WxCollectAddBO;
import com.dropdb.demo.bean.vo.BaseRespVO;
import com.dropdb.demo.bean.vo.CollectDataVO;
import com.dropdb.demo.service.WxCollectServie;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * @author:cheyanjun
 * @date:2020/06/30 20:00
 */
@RestController
@RequestMapping("wx/collect")
public class WxCollectController {

    @Autowired
    WxCollectServie wxCollectServie;

    /**
     * 根据用户信息获取收藏列表，并且实现分页显示
     * @param type
     * @param page
     * @param size
     * @return
     */
    @GetMapping("list")
    public BaseRespVO getCollectList(int type,int page,int size ){
        User user = (User) SecurityUtils.getSubject().getPrincipal();
        int userId=user.getId();
        CollectDataVO collectDataVOS=wxCollectServie.getCollectList(userId,type,page,size);
        return BaseRespVO.ok(collectDataVOS);
    }

    /**
     * 实现收藏记录的增加或删除
     * 增加和删除是同一个url，并且请求体封装的数据都相同，先查询collect表是否有该条记录
     * 有记录：则再根据deleted判断是否物理删除，若物理删除，则改为增加收藏；若无物理删除，则改为删除收藏
     * 无记录：则说明是增加收藏，直接插入数据
     * @param wxCollectAddBO
     * @return 删除返回delete，增加返回add
     */
    @PostMapping("addordelete")
    public BaseRespVO addOrDelete(@RequestBody WxCollectAddBO wxCollectAddBO){
        User user = (User) SecurityUtils.getSubject().getPrincipal();
        if(user==null){//没有登录，直接返回错误码
            return BaseRespVO.error(501,"请登录");
        }
        int userId=user.getId();
        Map data =new HashMap();
        int num = wxCollectServie.queryCollect(userId,wxCollectAddBO.getType(),wxCollectAddBO.getValueId());
        if(num==1){
            data.put("type","delete");
        }else {
            data.put("type","add");
        }
        return BaseRespVO.ok(data);
    }
}
